package com.lovo.system.utils;

import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.net.URLDecoder;
import java.util.UUID;

/**
 * 文件处理工具类
 */
public class FileUtils {

    //绝对路径
    private static String absolutePath = "D:/face/";

    /**
     * 上传文件 公共方法
     * @param file 文件对象
     * @param obj 当前控制器
     * @return   文件的名称
     * @throws IOException
     */
    public static String uploadFile(MultipartFile file,Object obj) throws IOException {
        String sourceName = file.getOriginalFilename();
        //2.截取文件的后缀名
        String suffixName = sourceName.substring(sourceName.lastIndexOf("."));
        //3.组装文件在服务器存在的最终文件名
        //UUID是一个随机的字符串，这个字符串重复的概率趋于0
        String newFileName =  UUID.randomUUID() + suffixName;
        //4.获取文件存放服务器的路径
        //URL对象：得到当前static/img的真实路径对象
        URL url = obj.getClass().getClassLoader().getResource("static/img");
        //5.解码：服务器存在路径很多时候有些人喜欢中文命名，为了防止乱码需要设置
        //只要文件路径不是中文一般不用设置
        String path = URLDecoder.decode(url.getFile(),"utf-8");
        //6.拷贝文件
        //file源文件对象，方法中参数是目标文件对象
        file.transferTo(new File(path+"/"+newFileName));
        return newFileName;
    }


    /**
     *
     * @param file 文件对象
     * @return  返回新的文件名称
     * @throws IOException
     */
    public static String uploadFileAbsolute(MultipartFile file) throws IOException {
        //获取上传文件的名称
        String fileName = file.getOriginalFilename();
        //得到文件后缀名
        String suffixName = fileName.substring(fileName.lastIndexOf("."));
        //得到文件的新名称
        String newFileName = UUID.randomUUID()+suffixName;
        //文件上传到绝对路径
        file.transferTo(new File(absolutePath+newFileName));

        return newFileName;
    }

}
